This disclosure relates generally to computer-based mechanisms for exchanging data between two systems, and more particularly to techniques for self-learning performance-optimize data transfer between two systems via one or more communication channels.
FIG. 1 illustrates a generic system landscape 100 in which a calling system (System A 102) sends requests to called system (System B 104). System A 102 and System B 104 can be two separate computing systems, or may be two separate servers in one computing system. System A 102 includes a client 106, such as an application, and a communicator 108 through which the client 106 sends the requests to System B 104. The communicator 108 includes logic and interfaces for one or more channels 110. Each channel 110 represents the physical media, such as cable or wireless media, and the communication type or protocol to be used, such as the Hypertext Transmission Protocol (HTTP), Simple Message Transfer Protocol (SMTP), Remote Function Call (RFC), or the like.
The request can include data. For synchronous communications, in which an immediate response is more or less expected, and depending on the capacity of the channel 110 being used, if the data is large it may optionally be first deposited into a common repository 112, such as a database or file system. System A 102 need only send a reference to the data in the request via the channel 110. System B 104 can use the reference to access the data from the common repository 112. At a time when it is convenient or allowable to do so, such as a weekend or other low-use times, System B 104 can simply use the channel 110 to receive the data.
Considerations for data exchanges include CPU processing time or speed, memory usage, network usage and/or bandwidth, and costs such as channel, storage, or transmission costs. Usually, these considerations are taken into account and hard-coded during design time of communication scenarios of an application or business process. However, such an approach does not achieve an optimal way to exchange data, and which is generic for all purposes.